package com.ssy.lingxi.pay.service;

import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.pay.model.vo.request.PageQueryCreditTradeRecordVO;
import com.ssy.lingxi.pay.model.vo.response.CreditOverdueTradeRecordAppVO;
import com.ssy.lingxi.pay.model.vo.response.CreditOverdueTradeRecordVO;
import com.ssy.lingxi.pay.model.vo.response.CreditTradeRecordPageQueryAppVO;
import com.ssy.lingxi.pay.model.vo.response.CreditTradeRecordPageQueryVO;

import java.util.List;

/**
 * 授信交易记录接口
 * @author 伍将
 * @date 2020/8/21
 * @version 2.0.0
 */
public interface ICreditTradeRecordService {

    /**
     * 分页查询授信交易记录
     * @author 伍将
     * @date 2020/8/21
     * @param pageVO:
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.common.response.PageData < com.ssy.lingxi.pay.model.vo.response.CreditTradeRecordPageQueryVO>>
     **/
    Wrapper<PageData<CreditTradeRecordPageQueryVO>> pageTradeRecord(PageQueryCreditTradeRecordVO pageVO);

    /**
     * 查询交易记录
     * @author 伍将
     * @date 2020/8/24
     * @param billIdList: 账单id列表
     * @param operation: 交易项目: 1-订单支付, 2-订单退款, 3-还款
     * @param tradeStatus:交易状态
     * @return com.ssy.lingxi.common.response.Wrapper<java.util.List < com.ssy.lingxi.pay.model.vo.response.CreditTradeRecordVO>>
     **/
    Wrapper<List<CreditOverdueTradeRecordVO>> getTradeRecordList(List<Long> billIdList, Integer operation, Integer tradeStatus);

    /**
     * App端查询逾期交易记录
     * @param billIdList
     * @param operation
     * @param tradeStatus
     * @return
     */
    Wrapper<List<CreditOverdueTradeRecordAppVO>> getTradeRecordListByApp(List<Long> billIdList, Integer operation, Integer tradeStatus);

    /**
     * App端分页查询授信交易记录
     * @author 伍将
     * @date 2021/3/5
     * @param pageVO: 请求参数
     * @return 操作结果
     **/
    Wrapper<PageData<CreditTradeRecordPageQueryAppVO>> pageTradeRecordByApp(PageQueryCreditTradeRecordVO pageVO);
}
